#include <iostream>
#include "ThoiGian.h";

using namespace std;

int ThoiGian::getNgay()
{
	return m_ngay;
}

int ThoiGian::getThang()
{
	return m_thang;
}

int ThoiGian::getNam()
{
	return m_nam;
}

int ThoiGian::getGio()
{
	return m_gio;
}

int ThoiGian::getPhut()
{
	return m_phut;
}

int ThoiGian::getGiay()
{
	return m_giay;
}

void ThoiGian::setNgay(int ngay)
{
	m_ngay = ngay;
}

void ThoiGian::setThang(int thang)
{
	m_thang = thang;
}

void ThoiGian::setNam(int nam)
{
	m_nam = nam;
}

void ThoiGian::setGio(int gio)
{
	m_gio = gio;
}

void ThoiGian::setPhut(int phut)
{
	m_phut = phut;
}

void ThoiGian::setGiay(int giay)
{
	m_giay = giay;
}

ThoiGian::ThoiGian()
{
	m_ngay = 0;
	m_thang = 0;
	m_nam = 0;
	m_gio = 0;
	m_phut = 0;
	m_giay = 0;
}


ThoiGian ThoiGian::operator +(const int ngay)
{
	ThoiGian tg;
	int tongSoNgay = m_ngay + ngay;
	int tongSoThang = m_thang + (tongSoNgay / tinhNgay(m_thang,m_nam));
	if (tongSoNgay <= tinhNgay(m_thang,m_nam))
	{
		tg.m_ngay = m_ngay + ngay;
		tg.m_thang = m_thang;
		tg.m_nam = m_nam;
		tg.m_gio = m_gio;
		tg.m_phut = m_phut;
		tg.m_giay = m_giay;
	}
	else
	{
		if (tongSoNgay % tinhNgay(m_thang,m_nam) == 0)
		{
			tg.m_ngay = (tongSoNgay % tinhNgay(m_thang,m_nam)) + 1;
		}
		else
		{
			tg.m_ngay = tongSoNgay % tinhNgay(m_thang,m_nam);
		}
		
		tg.m_thang = tongSoThang;

		if (tongSoThang <= 12)
		{
			tg.m_thang = tongSoThang;
			tg.m_nam = m_nam + (tongSoThang / 12);
		}
		else
		{
			tg.m_thang =  tongSoThang % 12;
			tg.m_nam = m_nam + (tongSoThang / 12);
		}
		tg.m_gio = m_gio;
		tg.m_phut = m_phut;
		tg.m_giay = m_giay;
	}

	return tg;
}



int ThoiGian::namNhuan(int iNamNhuan)
{
	return (iNamNhuan % 4 == 0 && iNamNhuan % 100 != 0 || iNamNhuan % 400 == 0) ? 1 : 0 ;
}


//int ThoiGian::tinhNgayCuaThang(int tgThang)
//{
//	int kq;
//	int ngay[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
//	kq = ngay[tgThang];
//	return kq;
//}



int ThoiGian::tinhNgay(int tgThang, int tgNam)
{
	int kq;
	int ngay[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	kq = ngay[tgThang] + ((tgThang == 2) ? namNhuan(tgNam) : 0);
	return kq;
}

ThoiGian::ThoiGian(int ngay, int thang, int nam)
{
	m_ngay = ngay;
	m_thang = thang;
	m_nam = nam;
	m_gio = 0;
	m_phut = 0;
	m_giay = 0;
}

ThoiGian::ThoiGian(int ngay, int thang, int nam, int gio, int phut, int giay)
{
	m_ngay = ngay;
	m_thang = thang;
	m_nam = nam;
	m_gio = gio;
	m_phut = phut;
	m_giay = giay;
}

int ThoiGian::tangGiay(int soGiay)
{
	int tongSoGiay = m_giay + soGiay;
	if (tongSoGiay < 60)
	{
		m_giay = m_giay + soGiay;
		
	}
	else
	{
		m_giay = (m_giay + soGiay) % 60;
		this->tangPhut(tongSoGiay / 60);
	}
	
	return m_giay;
}

int ThoiGian::tangPhut(int soPhut)
{
	int tongSoPhut = m_phut + soPhut;
	if (tongSoPhut < 60)
	{
		m_phut = m_phut + soPhut;
	}
	else
	{
		m_phut = (m_phut + soPhut) % 60;
		this->tangGio(tongSoPhut / 60);
	}
	return m_phut;
}

int ThoiGian::tangGio(int soGio)
{
	int tongSoGio = m_gio + soGio;
	if (tongSoGio < 24)
	{
		m_gio = m_gio + soGio;
	}
	else
	{
		m_gio = (m_gio + soGio) % 24;
	}
	return m_gio;
}

void ThoiGian::InManHinh()
{
	cout<<"Ngay: "<<m_ngay<<" Thang: "<<m_thang<<" Nam: "<<m_nam<<endl;
	cout<<"Gio: "<<m_gio<<" Phut: "<<m_phut<<" Giay:"<<m_giay<<endl;
}